package com.cskaoyan.javase.oop3._1interface._5example;

import com.cskaoyan.javase.oop3._1interface._5example.controller.ProductController;
import com.cskaoyan.javase.oop3._1interface._5example.controller.impl.ProductControllerImpl;
import com.cskaoyan.javase.oop3._1interface._5example.model.Product;

/**
 * 接口在实际开发中的使用案例
 *
 * 比如商品搜索的一个接口,后端实现这个接口
 * 需要前端提供搜索的词条暑促,这就是接口中抽象方法的形参列表
 * 然后后端查询到数据后,将结果返回给前端页面,然后前端页面展示数据
 * 这就是接口中抽象方法的返回值类型
 *
 * 实际的案例,展示商品:
 *  某电商系统后台，前端程序员需要后端程序员
 *  提供接口来完成库存的管理，展示页面。
 *  假如前后端商量好，要求：
 *      1.展示全部商品（goods）页面时，将仅装有商品对象的数组返回，前端不提供任何数据。
 *      2.新增商品时，前端提供商品各种参数，后端需要校验ID唯一性，然后将对象插入数组，返回插入结果。
 *      3.删除商品时，前端提供商品ID，后端将该商品删除后，返回删除删除结果。（成功返回true，找不到该ID的商品返回false）
 *
 * @since 11:25
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Test {
    public static void main(String[] args) {
        // 在测试类中,需要对商品数据做操作,该类模拟前端
        // 所以这里需要依赖于ProductController完成相关操作
        ProductController pc = new ProductControllerImpl();
        Product[] allRealProduct = pc.getAllRealProduct();
        for (Product product : allRealProduct) {
            // System.out.println(product);
            product.print();
        }
    }
}
